perm filename C1DUMP.FAI[SS,SYS] blob
sn#356003 filedate 1978-05-23 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE C1DUMP PROGRAM TO GOBBLE DSK HUNG TIMEOUT STUFF FROM MONITOR INTO A FILE
C00004 00003 START
C00008 00004 CHANNL LTLOOP LNLOOP BYLOOP PGM1LP PGM2LP PGMHLP PGMHL2
C00011 00005 CRLF STROUT STROU1 OCTOUT OCTOU1 OCTOU2 DEC2 DECOUT DECOU1 DECOU2 HEX3 HEX2 HEX1 CPOPJ
C00013 ENDMK
C⊗;
TITLE C1DUMP PROGRAM TO GOBBLE DSK HUNG TIMEOUT STUFF FROM MONITOR INTO A FILE
A←1
B←2
C←3
D←4
X←10
Y←11
H←12
T←13
P←17
ACWPRV←←40
NPACKS←←6
C1PPTR←←2
C1INST←←4
C1ALSV: BLOCK 10
C1ADSV: BLOCK 100+10
C1APSV: BLOCK C1PPTR+NPACKS+1
C1AGSV: BLOCK NPACKS*C1INST ;PROGRAM HEADERS
C1BLSV: BLOCK 10
C1BDSV: BLOCK 100+10
C1BPSV: BLOCK C1PPTR+NPACKS+1
C1BGSV: BLOCK NPACKS*C1INST ;PROGRAM HEADERS
C1SAVE::
TABLE: [ASCIZ / /]
[ASCIZ /Stat A /]
[ASCIZ /Stat B /]
[ASCIZ /Stat C /]
IFN .-TABLE-C1INST,<.FATAL TABLE length wrong for C1INST>
MONTAB: ASCIZ /Jan/
ASCIZ /Feb/
ASCIZ /Mar/
ASCIZ /Apr/
ASCIZ /May/
ASCIZ /Jun/
ASCIZ /Jul/
ASCIZ /Aug/
ASCIZ /Sep/
ASCIZ /Oct/
ASCIZ /Nov/
ASCIZ /Dec/
FILE: 'C1DUMP'
'TXT '
0
' SSSYS'
LPDL←←20
PDL: BLOCK LPDL
BUFFER: BLOCK =10000/5
;START
START: RESET
MOVE P,[IOWD LPDL,PDL]
MOVSI A,ACWPRV
SETPRV A,
TLNN A,ACWPRV
JRST [OUTSTR [ASCIZ /No ACW/] ↔ EXIT]
MOVSI A,377776
SETPR2 A,
JRST [OUTSTR [ASCIZ /No SETPR2/] ↔ EXIT]
MOVEI A,[RADIX50 0,C1ALSV ↔ 0]
.SYML A,
JRST [OUTSTR [ASCIZ /No .SYML/] ↔ EXIT]
SKIPN 400000+C1APSV-C1ALSV(A) ;FLAG IN THE MONITOR THAT WE'VE GOT IT
JRST [OUTSTR [ASCIZ /No new poop/] ↔ EXIT]
MOVSI B,400000(A) ;SOURCE OF BLT
HRRI B,C1ALSV ;DESTINATION OF BLT
BLT B,C1SAVE-1
SETZM 400000+C1APSV-C1ALSV(A) ;FLAG IN THE MONITOR THAT WE'VE GOT IT
DETSEG ;GET RID OF ACWNESS
INIT 17
'DSK '
0
JRST [OUTSTR [ASCIZ /No DSK/] ↔ EXIT]
DMOVE A,FILE ;GET LOOKUP BLOCK
DMOVE C,FILE+2
SETZM NEWF#
LOOKUP A
CAIA
JRST STRT1
TRNE B,-1 ;ERROR, SKIP IF NO SUCH FILE
JRST NOFILE
SETOM NEWF
STRT1: ENTER FILE ;R/A OR CREATE NEW FILE
JRST NOFILE
UGETF A ;GET TO THE END
MOVE D,[POINT 7,BUFFER]
PUSHJ P,HEADER
MOVEI B,[ASCIZ /CHANNEL A:
/]
PUSHJ P,STROUT
MOVEI X,C1ALSV ;POOP POINTER
PUSHJ P,CHANNL
MOVEI B,[ASCIZ /
CHANNEL B:
/]
PUSHJ P,STROUT
MOVEI X,C1BLSV ;POOP POINTER
PUSHJ P,CHANNL
MOVEI A,BUFFER-1
SUBI D,BUFFER-1 ;LENGTH
MOVNS D
HRLI A,(D)
MOVEI B,0
OUTPUT A
EXIT ;GOOD NIGHT
NOFILE: OUTSTR [ASCIZ /No file/]
EXIT
HEADER: MOVEI A,14
SKIPN NEWF
IDPB A,D
MOVEI B,[ASCIZ /Disk channel hung timeout log entry - /]
PUSHJ P,STROUT
ACCTIM A,
PUSH P,A
HLRZ A,A
IDIVI A,=31 ;B←DAY-1
ADDI B,1
PUSHJ P,DECOUT
MOVEI B,"-"
IDPB B,D
IDIVI A,=12 ;A←YEAR-64, B←MONTH-1
MOVEI B,MONTAB(B)
PUSH P,A
PUSHJ P,STROUT
POP P,A
MOVEI B,"-"
IDPB B,D
MOVEI B,=64(A)
PUSHJ P,DECOUT
MOVEI B,40
IDPB B,D
IDPB B,D
POP P,A
HRRZ A,A
IDIVI A,=60 ;MINUTES AFTER MIDNIGHT
IDIVI A,=60 ;A←HOURS, B←MINUTES
PUSH P,B
MOVE B,A
PUSHJ P,DEC2
MOVEI B,":"
IDPB B,D
POP P,B
PUSHJ P,DEC2
PUSHJ P,CRLF
JRST CRLF
;CHANNL LTLOOP LNLOOP BYLOOP PGM1LP PGM2LP PGMHLP PGMHL2
CHANNL: MOVEI B,[ASCIZ /LIGHTS:
/]
PUSHJ P,STROUT
MOVSI C,-10 ;AOBJN POINTER TO LIGHTS
LTLOOP: MOVEI A,"0"(C) ;NUMBER OF WORD IN TABLE
IDPB A,D
MOVEI B,[ASCIZ /: /]
PUSHJ P,STROUT
MOVE B,(X)
PUSHJ P,OCTOUT
PUSHJ P,CRLF
ADDI X,1
AOBJN C,LTLOOP
MOVEI B,[ASCIZ/
0 1 2 3 4 5 6 7 8 9 A B C D E F
/]
PUSHJ P,STROUT
MOVSI H,-100*4/20 ;HOW MANY LINES
HRLI X,441000 ;BPT TO HEX BYTES
LNLOOP: MOVSI C,-20
MOVEI B,(H) ;FIRST 3 HIGITS OF ADDR
PUSHJ P,HEX3
MOVEI B,[ASCIZ /x /]
PUSHJ P,STROUT
BYLOOP: ILDB B,X
PUSHJ P,HEX2
MOVEI B,[ASCIZ / /]
PUSHJ P,STROUT
AOBJN C,BYLOOP
PUSHJ P,CRLF
AOBJN H,LNLOOP
CAIN H,4000/20
JRST PGMNXT
MOVE H,[-2,,<4000-40>/20]
JRST LNLOOP
PGMNXT: MOVEI X,1(X)
MOVEI B,[ASCIZ /
PROGRAM TABLE
/]
PUSHJ P,STROUT
HRLI X,-C1PPTR ;AOBJN POINTER
PGM1LP: MOVEI A,11
IDPB A,D
MOVE B,(X)
PUSHJ P,OCTOUT
PUSHJ P,CRLF
AOBJN X,PGM1LP
HRLI X,-NPACKS
MOVEI H,"0"
PGM2LP: MOVEI B,[ASCIZ /PACK /]
PUSHJ P,STROUT
IDPB H,D
MOVEI A,11
IDPB A,D
MOVE B,(X)
PUSHJ P,OCTOUT
PUSHJ P,CRLF
ADDI H,1
AOBJN X,PGM2LP
MOVEI A,11
IDPB A,D
MOVE B,(X)
PUSHJ P,OCTOUT
PUSHJ P,CRLF
ADDI X,1
MOVEI B,[ASCIZ /
PROGRAM HEADERS
/]
PUSHJ P,STROUT
MOVEI H,"0"
MOVSI C,-NPACKS
PGMHLP: MOVEI B,[ASCIZ /
PACK /]
PUSHJ P,STROUT
IDPB H,D
PUSHJ P,CRLF
HRLI X,-C1INST
MOVEI Y,0
PGMHL2: MOVE B,TABLE(Y)
PUSHJ P,STROUT
MOVE B,(X)
PUSHJ P,OCTOUT
PUSHJ P,CRLF
ADDI Y,1
AOBJN X,PGMHL2
ADDI H,1
AOBJN C,PGMHLP
POPJ P,
;CRLF STROUT STROU1 OCTOUT OCTOU1 OCTOU2 DEC2 DECOUT DECOU1 DECOU2 HEX3 HEX2 HEX1 CPOPJ
CRLF: MOVEI B,[ASCIZ /
/]
STROUT: HRLI B,440700
STROU1: ILDB A,B
JUMPE A,CPOPJ
IDPB A,D
JRST STROU1
OCTOUT: PUSH P,B
HLLZS B
PUSHJ P,OCTOU1
MOVEI A,40
IDPB A,D
POP P,B
MOVSI B,(B)
OCTOU1: HRRI B,400000
OCTOU2: MOVEI A,0
LSHC A,3
JUMPE B,CPOPJ
ADDI A,"0"
IDPB A,D
JRST OCTOU2
DEC2: MOVEI A,"0"
CAIGE B,=10
IDPB A,D
DECOUT: PUSH P,C
PUSHJ P,DECOU1
POP P,C
POPJ P,
DECOU1: IDIVI B,=10
JUMPE B,DECOU2
HRLM C,(P)
PUSHJ P,DECOU1
HLRZ C,(P)
DECOU2: ADDI C,"0"
IDPB C,D
POPJ P,
HEX3: LDB A,[POINT 4,B,27]
PUSHJ P,HEX1
HEX2: LDB A,[POINT 4,B,31]
PUSHJ P,HEX1
LDB A,[POINT 4,B,35]
HEX1: CAILE A,9
ADDI A,"A"-12-"0"
ADDI A,"0"
IDPB A,D
CPOPJ: POPJ P,
END START